其他
SpringCloudAlibaba:Nacos实现原理详解
注册中心的原理
服务实例在启动时注册到服务注册表,并在关闭时注销 服务消费者查询服务注册表,获得可用实例 服务注册中心需要调用服务实例的健康检查API来验证它是否能够处理请求
Spring Cloud 完成注册的时机
org.springframework.cloud. client.serviceregistry .ServiceRegistry
,它是Spring Cloud提供的服务注册的标准。集成到Spring Cloud中实现服务注册的组件,都会实现该接口。NacoServiceRegistry
。beatReactor.addBeatInfo()
创建心跳信息实现健康检测, Nacos Server必须要确保注册的服务实例是健康的,而心跳检测就是服务健康检测的手段。serverProxy.registerService()
实现服务注册nacos/v1/ns/instance
,实现代码咋nacos-naming模块下的InstanceController类中:从请求参数汇总获得serviceName(服务名)和namespaceId(命名空间Id) 调用registerInstance注册实例
创建一个控服务(在Nacos控制台“服务列表”中展示的服务信息),实际上是初始化一个serviceMap,它是一个ConcurrentHashMap集合 getService,从serviceMap中根据namespaceId和serviceName得到一个服务对象 调用addInstance添加服务实例
根据namespaceId、serviceName从缓存中获取Service实例 如果Service实例为空,则创建并保存到缓存中
通过putService()方法将服务缓存到内存 service.init()建立心跳机制 consistencyService.listen实现数据一致性监听
服务提供者地址查询
解析请求参数 通过doSrvIPXT返回服务列表数据
根据namespaceId、serviceName获得Service实例 从Service实例中基于srvIPs得到所有服务提供者实例 遍历组装JSON字符串并返回
Nacos服务地址动态感知原理
往期推荐